package org.totoro.structure.list;

/**
 * @author daocr
 * @date 2020/3/22
 */
public interface List<E> {

    /**
     * 判断是否为 空
     *
     * @return
     */
    boolean isEmpty();

    /**
     * 获取  size
     *
     * @return
     */
    int size();

    /**
     * 是否包含
     *
     * @param o
     * @return
     */
    boolean contains(E o);

    /**
     * 添加到最后
     *
     * @param e
     * @return
     */
    boolean add(E e);

    /**
     * 指定位置添加
     *
     * @param index
     * @param element
     */
    void add(int index, E element);

    /**
     * 添加到最后
     *
     * @param element
     */
    void addLast(E element);

    /**
     * 返回下标
     *
     * @param o
     * @return
     */
    int indexOf(E o);


    /**
     * 从后面开始数，返回下标
     *
     * @param o
     * @return
     */
    int lastIndexOf(E o);

    /**
     * 删除元素
     *
     * @param o
     * @return
     */
    boolean remove(E o);

    /**
     * 获取元素
     *
     * @param index
     * @return
     */
    E get(int index);

    /**
     * 获取最后一个元素
     *
     * @return
     */
    E getLast();


}

